<?php
include_once('page.php');

/**
 * 用户类
 * */
class User {
    private static $sessionKey = 'user';


    /**
     * 
     * 查询所有的用户数据
     * 
     * */
    static function findAll() {
        $conn = self::getConn();
        // 去判断当前用户名，密码是否与数据库当中存的一致
        $stmt = $conn->prepare("SELECT * FROM user"); 
        $stmt->execute();

        // 获取到查询到的所有记录
        $rows = $stmt->fetchAll();
        $conn = null;

        return $rows;
    }

    /**
     * 
     * @param debug 是否为调试模式
     * @return 成功：数据库连接信息；失败：null
     * */
    static function getConn($debug = false) {
        $servername = "localhost";
        $dbname = "yunzhi";
        $dbusername = "root";
        $password = "";
         
        try {
            $conn = new PDO("mysql:host=$servername;dbname=$dbname", $dbusername, $password);
            return $conn;
        }
        catch(PDOException $e)
        {
            if ($debug) {
                echo $e->getMessage();
            }
            return null;
        }
    }


    /**
     * 
     * 获取当前登录的用户
     * 
     * */
    static function getCurrentLoginUser() {
        return self::isLogin() ? $_SESSION[self::$sessionKey] : null;
    }

    /**
     * 用户登录
     * @param username 用户名
     * @param password 密码
     * @return 成功，返回登录用户；失败，返回null
     * */
    static function login($username, $password) {
        $conn = self::getConn();
        // 去判断当前用户名，密码是否与数据库当中存的一致
        $stmt = $conn->prepare("SELECT * FROM user where `username` = '$username'"); 
        $stmt->execute();

        // 获取到查询到的所有记录
        $rows = $stmt->fetchAll();
        $conn = null;

        if (count($rows) > 0) {
            // 找到了用户名对应的相关记录
            $user = $rows[0];
            if ($user['password'] === $password) {
                // 密码也相等，登录成功
                // 记录一些信息。
                // 当前用户是登录用户
                $_SESSION[self::$sessionKey] = $user;
                return $user;
            }
            
        }

        return null;
    }

    /**
     * 
     * 注销
     * 
     * */
    static function logout() {
        $_SESSION[self::$sessionKey] = null;
    }

    /**
     * 
     * 判断用户是否已经登录
     * 
     * */
    static function isLogin() {
        if (!isset($_SESSION[self::$sessionKey]) || is_null($_SESSION[self::$sessionKey])) {
            return false;
        } else {
            return true;
        }
    }

    /**
     * 
     * 分页 
     * @param $page 第几页（0基)
     * @param $size 每页大小 
     * 
     * */
    static function page($number, $size = 3) {
        $conn = self::getConn();
        // 去判断当前用户名，密码是否与数据库当中存的一致
        $begin = $number * $size;
        $query = "SELECT * FROM user limit $begin, $size";
        $stmt = $conn->prepare($query); 
        $stmt->execute();

        // 获取到查询到的所有记录
        $users = $stmt->fetchAll();

        // 查询一共有多少条
        $query = "select COUNT(*) FROM user";
        $stmt = $conn->prepare($query); 
        $stmt->execute();
        $rows = $stmt->fetch();
        $totalCount = (int) $rows[0];

        // 查询完毕，关闭数据库连接
        $conn = null;
      
        return new Page(
            $users,
            $number,
            $size,
            $totalCount
        );
    }

}